function GetNumberOfK(data, k)
{
    // write code here
    // findRightPos 寻找x的有边界
    // 本质上是寻找x在nums中的插入点
    // 若数组中存在值相同的元素 则插入到这些元素的右边
    // 如果插入的数组是[] left = 0 right = -1 返回0 0-0还是0
    function findRightPos(x){
      // 定义一下左右边界位置
      var left = 0
      var right = data.length - 1
      // 当左边界小于等于右边界的时候继续循环
      // 为什么要有等于号  因为当左右边界指向同一个位置的时候 两个是相等的 
      // 但是在这个时候 我们并没有办法判断出 中间位置的数字与x的大小关系
      // 因为我们最终要返回的答案是left
      // 如果说是小于等于x的话 left是需要在原来的基础上+1的 否则的话 left不会被改变 所以即使是相等的时候也要判断两者之间的大小关系
      while(left <= right){
        let mid = left + Math.floor((right - left)/2)
        if(data[mid] <= x){
          // 中间的数字小于等于x的值 那就修改左边界 让左边界等于mid+1 
          // 这里是因为最后插入的位置在相同元素的右边
          left = mid + 1
        }else{
          // 修改右边界 中间的比x大说明插入的位置要在中间的左边
          right = mid - 1
        }
      }
      // 最终返回这个数字要插入的位置
      return left
    }
    return findRightPos(k) - findRightPos(k-1)
}
module.exports = {
    GetNumberOfK : GetNumberOfK
};